// ignore_for_file: must_be_immutable

import 'package:flutter/material.dart';
import './keepAlive.dart';

// void main() {
//   runApp(const MaterialApp(
//     // 不显示debug图标
//     debugShowCheckedModeBanner: false,
//     home: MyText(),
//   ));
// }

class MyText extends StatefulWidget {
  const MyText({super.key});

  @override
  State<MyText> createState() => _MyTextState();
}

class _MyTextState extends State<MyText> with SingleTickerProviderStateMixin {
  late TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 8, vsync: this);

    // 监听_tabController的改变事件  滑动和点击都可以获取
    _tabController.addListener(() {
      print(_tabController.index); // 获取2次
      if (_tabController.animation!.value == _tabController.index) {
        print('这是里面的-----'); // 只触发一次
        print(_tabController.index);
      }
    });
  }

  // 在页面销毁的时候取消监听 生命周期函数，页面销毁的时候触发
  @override
  void dispose() {
    super.dispose();
    _tabController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: PreferredSize(
            preferredSize: const Size.fromHeight(40),
            child: AppBar(
              elevation: 1,
              title: SizedBox(
                height: 40,
                child: TabBar(
                    isScrollable: true,
                    controller: _tabController,
                    onTap: (index) {
                      // 只能监听点击事件，不能监听滑动
                      print(index);
                    },
                    tabs: const [
                      Tab(
                        child: Text('关注'),
                      ),
                      Tab(
                        child: Text('热门'),
                      ),
                      Tab(
                        child: Text('我的'),
                      ),
                      Tab(
                        child: Text('篮球'),
                      ),
                      Tab(
                        child: Text('深圳'),
                      ),
                      Tab(
                        child: Text('疫情'),
                      ),
                      Tab(
                        child: Text('娱乐'),
                      ),
                      Tab(
                        child: Text('其他'),
                      )
                    ],
                    labelColor: Colors.red,
                    unselectedLabelColor: Colors.black,
                    indicatorColor: Colors.red,
                    indicatorSize: TabBarIndicatorSize.label,
                    tabAlignment: TabAlignment.center,
                    labelStyle: const TextStyle(fontSize: 20)),
              ),
              backgroundColor: Colors.white,
              // 标题是否居中
              centerTitle: true,
            )),
        body: TabBarView(
          controller: _tabController,
          children: [
            KeepAliveWrapper(
                child: ListView(
              children: const [
                ListTile(
                  title: Text('这是关注13'),
                ),
                ListTile(
                  title: Text('这是关注14'),
                ),
                ListTile(
                  title: Text('这是关注121'),
                ),
                ListTile(
                  title: Text('这是关注11'),
                ),
                ListTile(
                  title: Text('这是关注1'),
                ),
                ListTile(
                  title: Text('这是关注2'),
                ),
                ListTile(
                  title: Text('这是关注3'),
                ),
                ListTile(
                  title: Text('这是关注4'),
                ),
                ListTile(
                  title: Text('这是关注5'),
                ),
                ListTile(
                  title: Text('这是关注6'),
                ),
                ListTile(
                  title: Text('这是关注7'),
                ),
                ListTile(
                  title: Text('这是关注8'),
                ),
                ListTile(
                  title: Text('这是关注9'),
                ),
                ListTile(
                  title: Text('这是关注10'),
                ),
              ],
            )),
            const Text('我是热门'),
            const Text('我是我的'),
            const Text('我是篮球'),
            const Text('我是深圳'),
            const Text('我是疫情'),
            const Text('我是娱乐'),
            const Text('我是其他'),
          ],
        ));
  }
}
